<?php
/**
 * 
 * Clase para la sección sedes
 * @author Joan Muñoz
 * 
 */
class Venue {
  
  /**
   * 
   * Guarda una nueva sede
   * @return JSON $Error -> Regresa un objeto indicando si hubo error y el mensaje
   * @author Joan Muñoz
   * 
   */
  public function saveVenue() {
    require_once('../../config.php');
    
    $Error = (object) array(
      'error' => FALSE,
      'message' => 'Nueva sede agregada con éxito.'
    );
    
    try {
      // inserta la sede
      mysql_select_db(DB_NAME, $conexion);
      $query = sprintf("INSERT INTO sede (nombre) VALUES ('%s')",
         mysql_real_escape_string($_POST['sede']));
      mysql_query($query) or die(mysql_error());
      $id = mysql_insert_id();
      
      // Agrega las localidades
      foreach ($_POST['locacion'] as $key => $value) {
        $query = "INSERT INTO localidad (nombre, costo, sede_id) ";
        $query .= "VALUES ('%s', '%s', %d)";
        $query = sprintf($query,
          mysql_real_escape_string($value),
          mysql_real_escape_string($_POST['precio'][$key]),
          intval($id));
        mysql_query($query) or die(mysql_error());  
      }
      
      // Alamacena los datos guardados para mostrarlos en la tabla
      $Error->id = $id;
      $Error->nombre =  mysql_real_escape_string($_POST['sede']);
      
      mysql_close($conexion);
    } catch (Exception $e) {
      $Error->error = TRUE;
      $Error->message = $e->getMessage();
    }
    
    echo json_encode($Error);
  }
  
  /**
   * 
   * Edita una sede
   * @return JSON $Error -> Regresa un objeto indicando si hubo error y el mensaje
   * @author Joan Muñoz
   * 
   */
  public function editVenue() {
    require_once('../../config.php');
    
    $Error = (object) array(
      'error' => FALSE,
      'message' => 'Sede modificada con éxito.'
    );
    
    try {
       mysql_select_db(DB_NAME, $conexion);
       
       // Elimina las localidades
       $query = sprintf("DELETE FROM localidad WHERE sede_id = %d", 
        intval($_POST['sede_id']));
       mysql_query($query) or die(mysql_error());
       
       // Actualiza la sede
       $query = sprintf("UPDATE sede SET nombre = '%s' WHERE id = %d",
        mysql_real_escape_string($_POST['sede']),
        intval($_POST['sede_id']));
       mysql_query($query) or die(mysql_error());
       
       // Agrega las localidades
      foreach ($_POST['locacion'] as $key => $value) {
        $query = "INSERT INTO localidad (nombre, costo, sede_id) ";
        $query .= "VALUES ('%s', '%s', %d)";
        $query = sprintf($query,
          mysql_real_escape_string($value),
          mysql_real_escape_string($_POST['precio'][$key]),
          intval($_POST['sede_id']));
        mysql_query($query) or die(mysql_error());  
      }
      
      // Alamacena los datos guardados para modificar en la tabla
      $Error->id = $_POST['sede_id'];
      $Error->nombre =  mysql_real_escape_string($_POST['sede']);
       
       mysql_close($conexion);
    } catch (Exception $e) {
      $Error->error = TRUE;
      $Error->message = $e->getMessage();
    }
    
    echo json_encode($Error);
  }
  
  /**
   * 
   * Trae las locaciones de una sede
   * @param int $sede_id -> El id de la sede
   * @return JSON $Error -> Regresa un objeto indicando si hubo error y el mensaje
   * @author Joan Muñoz
   * 
   */
  public function getVenue($sede_id) {
    require_once('../../config.php');
    
    $Error = (object) array(
      'error' => FALSE,
      'message' => '',
      'nombre' => '',
      'localidades'
    );
    
    try {
      mysql_select_db(DB_NAME, $conexion);
      $query = sprintf("SELECT nombre FROM sede WHERE id = %d",
        intval($sede_id));
      $result = mysql_query($query) or die(mysql_error());
      $sede = mysql_fetch_assoc($result);
      
      // Guarda el nombre de la sede
      $Error->nombre = $sede['nombre'];
      
      mysql_free_result($result);
      
      $query = sprintf("SELECT * FROM localidad WHERE sede_id = %d", 
        intval($sede_id));
      $result = mysql_query($query) or die(mysql_error());
      
      // Guarda las localidades
      $localidades = array();
      while ($localidad = mysql_fetch_assoc($result)) {
        $localidades['id'][] = $localidad['id'];
        $localidades['nombre'][] = $localidad['nombre'];
        $localidades['costo'][] = $localidad['costo'];
      }
      
      $Error->localidades = $localidades;
      
      mysql_free_result($result);
      mysql_close($conexion);
    } catch (Exception $e) {
      $Error->error = TRUE;
      $Error->message = $e->getMessage();
    }
    
    echo json_encode($Error);
  }
  
   /**
   * 
   * Elimina una locación y sus localidades
   * @param int $sede_id -> El id de la sede
   * @return JSON $Error -> Regresa un objeto indicando si hubo error y el mensaje
   * @author Joan Muñoz
   * 
   */
  public function deleteVenue($sede_id) {
    require_once('../../config.php');
    
    $Error = (object) array(
      'error' => FALSE,
      'message' => 'Sede eliminada con éxito.'
    );
    
    try {
      mysql_select_db(DB_NAME, $conexion);
      
      // Elimina las localidades de la sede
      $query = sprintf("DELETE FROM localidad WHERE sede_id = %d",
        intval($sede_id));
      mysql_query($query) or die(mysql_error());
      
      // Elimina la sede
      $query = sprintf("DELETE FROM sede WHERE id = %d", intval($sede_id));
      mysql_query($query) or die(mysql_error());
      
      mysql_close($conexion);
     } catch (Exception $e) {
      $Error->error = TRUE;
      $Error->message = $e->getMessage();
    }
    
    echo json_encode($Error); 
  }
  
} // end CLASS


/**
 * 
 * Crea la instancia del objeto y manda llamar el método correspondiente
 * @author Joan Muñoz
 * 
 */
$Venue = new Venue();

if( isset($_GET['action']) ) {
  
  if( $_GET['action'] == 'save' ) {
    $Venue->saveVenue();
  } else if( $_GET['action'] == 'getvenue' ) {
    $Venue->getVenue($_POST['sede_id']);
  } else if( $_GET['action'] == 'edit' ) {
    $Venue->editVenue();
  } else if ( $_GET['action'] == 'delete' ) {
    $Venue->deleteVenue($_POST['sede_id']);
  } else {
    $Error = (object) array(
      'error' => TRUE,
      'message' => 'Ocurrio un error. La acción que intenta hacer no existe.'
    );
    
    echo json_encode($Error);
  }
  
} else {
  $Error = (object) array(
    'error' => TRUE,
    'message' => 'Ocurrio un error. La acción que intenta hacer no existe.'
  );
  
  echo json_encode($Error);
}
?>